#include <stdio.h>

typedef struct _a
{
	unsigned char aa[3];
	unsigned long ab[4];
}sa;

static sa ga;

int main()
{
  /*4005fc:	a9bd7bfd 	stp	x29, x30, [sp, #-48]!
  400600:	910003fd 	mov	x29, sp
  400604:	b9001fa0 	str	w0, [x29, #28]
  400608:	f9000ba1 	str	x1, [x29, #16]
  40060c:	12800000 	mov	w0, #0xffffffff            	// #-1
  400610:	b9002fa0 	str	w0, [x29, #44]*/
	int a = -1;

  /*400614:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  400618:	9100e000 	add	x0, x0, #0x38
  40061c:	39455800 	ldrb	w0, [x0, #342]	// 0x411038+342
  400620:	2a0003e1 	mov	w1, w0
  400624:	90000000 	adrp	x0, 400000 <_init-0x480>
  400628:	911f4000 	add	x0, x0, #0x7d0
  40062c:	97ffffb1 	bl	4004f0 <printf@plt>*/
	printf("%d\n", ga.aa[0]);

  /*400630:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  400634:	9100e000 	add	x0, x0, #0x38
  400638:	39455c00 	ldrb	w0, [x0, #343]	// 0x411038+343
  40063c:	2a0003e1 	mov	w1, w0
  400640:	90000000 	adrp	x0, 400000 <_init-0x480>
  400644:	911f4000 	add	x0, x0, #0x7d0
  400648:	97ffffaa 	bl	4004f0 <printf@plt>*/
	printf("%d\n", ga.aa[1]);

  /*40064c:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  400650:	9100e000 	add	x0, x0, #0x38
  400654:	39456000 	ldrb	w0, [x0, #344]	// 0x411038+344
  400658:	2a0003e1 	mov	w1, w0
  40065c:	90000000 	adrp	x0, 400000 <_init-0x480>
  400660:	911f4000 	add	x0, x0, #0x7d0
  400664:	97ffffa3 	bl	4004f0 <printf@plt>*/
	printf("%d\n", ga.aa[2]);

  /*400668:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  40066c:	9100e000 	add	x0, x0, #0x38
  400670:	39455c01 	ldrb	w1, [x0, #343]
  400674:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  400678:	9100e000 	add	x0, x0, #0x38
  40067c:	39056001 	strb	w1, [x0, #344]*/
	ga.aa[2] = ga.aa[1];

  /*400680:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  400684:	9100e000 	add	x0, x0, #0x38
  400688:	39456000 	ldrb	w0, [x0, #344]
  40068c:	2a0003e1 	mov	w1, w0
  400690:	90000000 	adrp	x0, 400000 <_init-0x480>
  400694:	911f4000 	add	x0, x0, #0x7d0
  400698:	97ffff96 	bl	4004f0 <printf@plt>*/
	printf("%d\n", ga.aa[2]);

  /*40069c:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  4006a0:	9100e000 	add	x0, x0, #0x38
  4006a4:	3201f3e1 	mov	w1, #0xaaaaaaaa            	// #-1431655766
  4006a8:	f9001801 	str	x1, [x0, #48]				// 0x411038+48(0x30)=0x411068 
  4006ac:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  4006b0:	9100e000 	add	x0, x0, #0x38
  4006b4:	3201ebe1 	mov	w1, #0xbbbbbbbb            	// #-1145324613
  4006b8:	f9001c01 	str	x1, [x0, #56]
  4006bc:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  4006c0:	9100e000 	add	x0, x0, #0x38
  4006c4:	3202e7e1 	mov	w1, #0xcccccccc            	// #-858993460
  4006c8:	f9002001 	str	x1, [x0, #64]
  4006cc:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  4006d0:	9100e000 	add	x0, x0, #0x38
  4006d4:	3202ebe1 	mov	w1, #0xdddddddd            	// #-572662307
  4006d8:	f9002401 	str	x1, [x0, #72]*/
	ga.ab[0] = 0xaaaaaaaa;
	ga.ab[1] = 0xbbbbbbbb;
	ga.ab[2] = 0xcccccccc;
	ga.ab[3] = 0xdddddddd;

  /*4006dc:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  4006e0:	9100e000 	add	x0, x0, #0x38
  4006e4:	39456000 	ldrb	w0, [x0, #344]		// w0 = ga.aa[2]
  4006e8:	2a0003e1 	mov	w1, w0					// w1 = 0
  4006ec:	b0000080 	adrp	x0, 411000 <__libc_start_main@GLIBC_2.17>
  4006f0:	9100e000 	add	x0, x0, #0x38			// x0=0x411038
  4006f4:	93407c21 	sxtw	x1, w1				// x1=0
  4006f8:	91001821 	add	x1, x1, #0x6			// x1=6
  4006fc:	f8617800 	ldr	x0, [x0, x1, lsl #3]	// x0 = x0+(x1<<3)=0x411038+48(0x30)=0x411068
  400700:	b9002fa0 	str	w0, [x29, #44]*/
	a = ga.ab[ga.aa[2]];

  /*400704:	90000000 	adrp	x0, 400000 <_init-0x480>
  400708:	911f6000 	add	x0, x0, #0x7d8
  40070c:	b9402fa1 	ldr	w1, [x29, #44]
  400710:	97ffff78 	bl	4004f0 <printf@plt>*/
	printf("%#x\n", a);

  /*400714:	52800000 	mov	w0, #0x0                   	// #0
  400718:	a8c37bfd 	ldp	x29, x30, [sp], #48
  40071c:	d65f03c0 	ret*/
	return 0;
}
